#pragma once


#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int LDT;

typedef struct ListNode
{
	struct ListNode* prev;
	struct ListNode* next;
	LDT data;
}LN;

LN* ListInit();

void ListPrint(LN* phead);

bool ListEmpty(LN* phead);

void ListPushBack(LN* phead, LDT val);

void ListPushFront(LN* phead, LDT val);

void ListPopFront(LN* phead);

void ListPopBack(LN* phead);

LN* ListFind(LN* phead, LDT val);

void ListInsert(LN* pos, LDT val);

void ListErase(LN* pos);

void ListDestroy(LN* phead);